using System;
using System.Collections.Generic;
using System.Text;

namespace AgilePlannerDT.Data
{
    /// <summary>
    /// Defines base for all index card planning objects
    /// </summary>
    public interface IndexCard : AbstractRoot, IComparable<IndexCard>
    {
        int SyncID { get; set; }
        /// <summary>
        /// Gets or sets the actual effort.
        /// </summary>
        /// <value>The actual effort.</value>
        float ActualEffort
        {
            get;
            set;
        }



        Project getProject();
        
        /// <summary>
        /// Gets or sets the best case estimate.
        /// </summary>
        /// <value>The best case estimate.</value>
        float BestCaseEstimate
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the description.
        /// </summary>
        /// <value>The description.</value>
        String Description
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the height.
        /// </summary>
        /// <value>The height.</value>
        double Height
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the position on the X axis.
        /// </summary>
        /// <value>The location X.</value>
        double LocationX
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the position on the Y axis.
        /// </summary>
        /// <value>The location Y.</value>
        double LocationY
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the mostlikely estimate.
        /// </summary>
        /// <value>The mostlikely estimate.</value>
        float MostlikelyEstimate
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the parent.
        /// </summary>
        /// <value>The parent.</value>
        long Parent
        {
            get;
            set;
        }

        /// <summary>
        /// Gets the remaining effort.
        /// </summary>
        /// <value>The remaining effort.</value>
        float RemainingEffort
        {
            get;
        }

        /// <summary>
        /// Gets or sets the rotation angle.
        /// </summary>
        /// <value>The rotation angle.</value>
        double RotationAngle
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the status.
        /// </summary>
        /// <value>The status.</value>
        String Status
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the width.
        /// </summary>
        /// <value>The width.</value>
        double Width
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the worst case estimate.
        /// </summary>
        /// <value>The worst case estimate.</value>
        float WorstCaseEstimate
        {
            get;
            set;
        }

        /// <summary>
        /// Gets a value indicating whether work on this card is completed.
        /// </summary>
        /// <value>
        /// 	<c>true</c> if this instance is completed; otherwise, <c>false</c>.
        /// </value>
        bool IsCompleted
        {
            get;
        }

        /// <summary>
        /// Gets a value indicating whether work on this card is started.
        /// </summary>
        /// <value>
        /// 	<c>true</c> if this card is started; otherwise, <c>false</c>.
        /// </value>
        bool IsStarted
        {
            get;
        }
    }
}